Modern electronic devices such as personal computers, personal digital assistants and cellphones are rarely, if ever, wholly designed and manufactured by one company. Instead, they are collections of functional modules (e.g., hard macros, integrated circuits or circuit boards) manufactured by different companies and made to work together by means of interconnecting buses. The buses allow data (analog or digital) and control signals to be communicated among the functional modules.
Currently, many different protocol standards govern the communication of data and control signals. Still other standards govern the physical configuration and operation of data and control buses and the bus management circuitry that uses them. Normally, standards are perceived as beneficial. They bring uniformity and compatibility to designs. However, standards are all too often developed without reference to potentially competing standards and may as a result be mutually incompatible.
It is often the case that functional modules from various companies to be brought together to form an electronic device adhere to different communication standards and are designed to use different standard buses and bus management circuitry. As a consequence, the electronic device is forced to accommodate multiple types of buses and associated bus management circuitry.
The effects of this accommodation are manifold and can be quite detrimental. First, at least some of the functional modules are forced to have more pins, which likely makes them physically larger. Second, designing of the electronic device is more difficult and thus requires more time. Third, circuit layout and bus routing become more complex and require more space (“real estate”). Fourth, the additional circuitry increases power consumption. Fifth, testing, fault isolation and debugging become more tedious. And sixth, the time required to initialize the electronic device for operation (“booting”) is increased.
For these reasons, what is needed in the art is a better way to join functional modules adhering to disparate communication or bus standards.